/**
 * 系统引导部分，启动时由硬件加载运行，然后完成对二级引导程序loader的加载
 * 该部分程序存储于磁盘的第1个扇区，在计算机启动时将会由BIOS加载到0x7c00处
 * 之后，将由BIOS跳转至0x7c00处开始运行
 */
	#include "boot.h"

  	// 16位代码，务必加上
  	.code16
 	.text
	.global _start
	.extern boot_entry
_start:
	//采用平坦内存模型,将段寄存器设置为0
	mov $0,%ax
	mov %ax,%ds
	mov %ax,%ss
	mov %ax,%es
	mov %ax,%fs
	mov %ax,%gs

	mov $_start,%esp	//设置栈指针

	//读取系统加载器程序到内存的0x8000地址处
read_loader:
	mov $0x8000,%bx		//设置从磁盘读取的数据放到内存中的起始位置地址偏移
	mov $0x2,%ah		//设置磁盘读写操作类型,这里是2,为读磁盘
	mov $0x64,%al		//一共读取的扇区数量,这里指定64个扇区
	mov $0x0,%ch		//读取的磁盘柱面位置,这里设置为0
	mov $0x2,%cl		//bios认为磁盘扇区的编号从1开始
	mov $0x0,%dh		//读取的磁头编号0
	mov $0x0080,%dl		//指定哪一个硬盘,这里是第一块硬盘
	int $0x13
	jc read_loader

	jmp boot_entry

	jmp .
	
	// 引导结束段
	.section boot_end, "ax"
boot_sig: .byte 0x55, 0xaa
